#pragma once

#include <queue>

class IRenderable;

class Renderer
{
	std::queue<const IRenderable*>	m_First;
	std::queue<const IRenderable*> m_Second;
	std::queue<const IRenderable*> m_Third;
	std::queue<const IRenderable*> m_Fourth;

public:
	enum Priority { P_FIRST,P_SECOND,P_THIRD,P_FOURTH };

	static Renderer* getInstance();

	void Render();
	void AddRenderable(const IRenderable *pGeometry,Priority ePriority);

	void ClearQueue();

private:
	Renderer(void);
	Renderer(const Renderer&);
	virtual ~Renderer(void);
	Renderer& operator =(const Renderer&);
};

